<?php
/**
 * crcl/base
 *
 * Copyright 2013 CRCL - André Sabosch - info@crcl.de
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

declare(encoding = 'UTF-8');
namespace crcl\base\template\instructions;

interface IContent
{
}

class ContainerContent extends Base implements IContent, IConcrete
{
  public function execute()
  {
    $sVar = $this->getAttribute('content');
    $this->sOutput = $this->compileVar($sVar);
  }

  public function verify()
  {
    foreach ($this->aAttributes as $sAttribute => $sValue)
    {
      if (!\in_array($sAttribute, $this->aAllowedAttributes))
      {
        throw new Exception(Exception::ERROR_INSTRUCTIONS_INVALID_ATTRIBUTE_COMBINATION,
          array('attribute' => $sAttribute, 'mode' => 'content'));
      }
    }
  }

  /** PRIVATE *************************************************************************************/

  private $aAllowedAttributes = array('content');

  private function compileVar($sVar)
  {
    if ($sVar[0] == '$') //var content
    {
      $sVar = \substr($sVar, 1);
      $sVar = $this->getValue($sVar);
    }
    //else fixed content
    return $sVar;
  }
}

